
///////////////////////////////////////////////////////////////////////////////
//
//  Copyright (c) 2008, Arizona State University
//  All rights reserved.
//  BSD License: http://www.opensource.org/licenses/bsd-license.html
//  Created by: Adam Kubach
//
///////////////////////////////////////////////////////////////////////////////

#include "Minerva/Core/Data/NetworkLink.h"

using namespace Minerva::Core::Data;

///////////////////////////////////////////////////////////////////////////////
//
//  Constructor.
//
///////////////////////////////////////////////////////////////////////////////

NetworkLink::NetworkLink() : BaseClass(),
  _link ( 0x0 )
{
}


///////////////////////////////////////////////////////////////////////////////
//
//  Destructor.
//
///////////////////////////////////////////////////////////////////////////////

NetworkLink::~NetworkLink()
{
}


///////////////////////////////////////////////////////////////////////////////
//
//  Clone.
//
///////////////////////////////////////////////////////////////////////////////

Minerva::Core::Data::Feature* NetworkLink::clone() const
{
  NetworkLink::RefPtr networkLink ( new NetworkLink );
  networkLink->link ( this->link() );
  return networkLink.release();
}


///////////////////////////////////////////////////////////////////////////////
//
//  Get the link.
//
///////////////////////////////////////////////////////////////////////////////

NetworkLink::Link* NetworkLink::link() const
{
  Guard guard ( this->mutex() );
  return _link.get();
}


///////////////////////////////////////////////////////////////////////////////
//
//  Set the link.
//
///////////////////////////////////////////////////////////////////////////////

void NetworkLink::link( Link* link )
{
  Guard guard ( this->mutex() );
  _link = link;
}
